This written description is in the field of providing services in a Service Oriented Architecture (SOA). More particularly, the description relates to monitoring and recovering from an unavailability of an atomic service.
Many different types of computing systems have attained widespread use around the world. These computing systems include personal computers, servers, mainframes and a wide variety of stand-alone and embedded computing devices. In general, all of these systems have a processor and an operating system that controls operation of the processor and components peripheral to the processor. Executable application programs are stored in a computer's hard drive. The computer's processor causes application programs to run in response to user inputs.
Sprawling client-server systems exist, with applications and information spread across many PC networks, mainframes and minicomputers. In a distributed system connected by networks, a user may access many application programs, databases, network systems, operating systems and mainframe applications. Computers provide individuals and businesses with a host of software applications including word processing, spreadsheet, and accounting. Further, networks enable high speed communication between people in diverse locations by way of e-mail, websites, instant messaging, and web-conferencing.
Thus, in a modern system, a plurality of computers—including servers—are connected together through a network. Each computer may run application programs for performing certain functions. These application programs may include word-processing, e-mail, graphics, document viewing and mark-up, spreadsheet, database, music player, internet browser, photo-shop, games, anti-virus, as well as a host of other application programs too numerous to mention.
Further, websites at a server may provide services to a user of a computer connected to the network. For example, a travel company may provide a website at a server that enables a user to schedule and purchase airline flights, hotel reservations, and a rental car. These atomic services, although presented to the user at a single website as a single composite service, may actually be located on servers in different locations. Thus, on a server at one location will be a database of flight times for flights from a first airline company. On another server will be a database of flight times for a second airline company. Another server at yet another location will provide a database for car rentals, etc. But, from the user's perspective, the atomic services appear to be presented from a single source.
Thus, a composite service is a service whose implementation calls other services. In contrast, an atomic service is one that is self-contained and does not invoke another service from a different source. Thus, for example, a travel company website may be a composite service that presents information and enables a user to schedule and purchase one, some, or all of the atomic services offered; namely, an airline flight, a hotel room, and a rental car. More particularly, one atomic service may be provided by one airline company and another atomic service may be provided by another airline company. The composite service presents data from each airline company so that a user can choose between the services.
Sometimes, an atomic service which is one of a composite of atomic services will be unavailable for some reason. When a user accesses the composite service cite he or she does not know that one of the services is unavailable. The user may go through a considerable process of making selections and entering data only to find out that she can't make the reservation she was applying for because that service is unavailable, leading to considerable dissatisfaction.